Rendering quality is a key metric for evaluating a low power GPU. A common design issue related to rendering quality is float precision. A graphics library often must perform a number of floating-point operations in the course of operation. Data type precision typically needs to be specified in every shader. Graphics processing implementations normally perform computations in floating-point, and must meet the range and precision requirements defined in a specification as the precision qualifier can significantly affect behavior in many implementations. The OpenGL ES Shading Language Specification (e.g., GLSL 1.1, Jun. 6, 2014), for example, specifies range and precision requirements during shader execution. Within GLSL, an implementation is allowed to vary the representation of numeric values, both within a shader and between different shaders. “High-p” variables have the maximum range and precision available (e.g., 32-bit IEEE 743 floating point), but may cause operations to run more slowly on some implementations. For “medium-p” and “low-p”, GLSL only specifies the minimal precision requirement, with a GPU vendor having the freedom to select the final implementation. Medium-p (mediump) and low-p (lowp) variables implemented in FP16 can deliver better performance, for example in terms of frames/sec but will result in lower rendering quality relative to a FP32 implementation.
Depending on data type precision definitions, one graphics implementation of medium-p and low-p data types may provide better or worse rendering quality at the expense of at the expense of pixel processing capability. A graphics processing implementation that is able to retain the performance of a low precision medium-p data type, without suffering from lower rendering quality would advantageously excel at both rendering quality and FPS benchmarks.